YYYY.MM.DD

2005.08.08
  - RequireScript/RequireSystemScript now work with RestartGame()
  - Added Tileset->Move->Other...

2005.07.26
  - Made Line() more accurate.
  - Added Tileset->View->Grid
  - Made the file dialog in browse for background music / tilesets
    on map properties dialog start in the sounds/maps folder.
  - Made deleting zones that are inside of other zones better by deleting based
    on zone area rather than the order the zones were placed on the map.
    (i.e. smallest zone gets removed...)

2005.05.22
  - Added 3d support to sphere_gl.dll and 3d map blitting.

2005.05.08
  - Fix the F10-and-autodetect-bug

2005.05.07
  - File-Save now defaults into <project_directory>/<file type>/ if a project is open.

2005.05.06
  - File->Open->Project now looks for game.sgm even if you select a different file...
  - Project->Run Game will now show a message box if you have no game script set.
  - Project->Package Game now mandates that game.sgm and the game script
    must be included in the package you create. 

2005.01.12
  - Added ~/ and /common/ for things like:
    LoadImage("~/maps/test.png");
    or:
    ChangeMap("/common/Flikky/maps/test.rmp");

2004.12.23
  - Fixed Line(0, 0, 0, 0, CreateColor(255, 255, 255)); crashes bug.

2004.12.22
  - Fixed GetPersonData bug.
  - sound.setVolume(vol) now clamps vol in the range 0 to 255

2004.12.20
  - A person who has a base obstruction of only one pixel can now be blocked by tiles.
    (Only draw vertical or horizontal obstruction lines on the tiles...
     If you draw diagonal lines, Mr. pixel will be able to pass through obstructions...)
  - Made ping work in the irc client... :)

2004.12.05
  - Binding the talk key now disables talking to people.

2004.11.21
  - Added IsPersonVisible(person) and SetPersonVisible(person, visible)

2004.09.25
  - GetPersonList now does not return unnamed persons (like doc_functions said it would)

2004.09.02
  - Added CTRL + G shortcut for Goto Line

2004.08.28
  - Now switching from one window to another window while maximized
    will not show a normal window for a moment before showing
    the maximized window
  - The script window's List window will now show itself when it's been
    covered up by making another window active and then going back to it.

2004.07.??
  - Added MIDI support for the engine/editor
  - Started to work on CD player support for the editor
  - At some point I added an irc client that still isn't that useful yet.

2004.07.02
  - It is now safe to call UpdateMapEngine from an update script
   (or CallPersonScript or CallDefaultMapScript)

2004.05.18
  - Fixed package game image loading problems
  - You can now drag and drop spk files onto the engine.exe to play them
  - Added more details about file save errors

2004.05.16
  - Fixed bug that made the engine crash when creating
    people in a person's on generate commands script
  - added -version and -help commands to engine.exe

2004.05.12
  - Added Tools->Javascript Console and Tools->Images To MNG...

2004.05.06
  - Added GetLayerAngle/SetLayerAngle (thanks to K9)
  - Added code-folding to the script editor
    (Use CTRL + SHIFT + Left Click on the +/-'s in the margin to show/hide all folds
  - Started to attempt adding a spell checker
  - Made the script's list sidebar hideable

2004.04.14
  - Moved statusbar text like map tile x, y and line/position into
    a seperate pane on the statusbar
  - Added Image/Font Change Borders for adding/removing pixels to the sides of images

2004.04.07
  - Added a clipboard history pane for scripts
  - Added a line sort tool for scripts

2004.03.24
  - Added autocomplete list to the script editor
  - Added drag and drop support to sounds in the editor to make playlists

2004.03.09
  - You can now change the pitch/pan of a sound in the editor
  - You can now change the position of a sound in the editor
    (if the sound is seekable, try it with an ogg file)
  - added sound.getPosition(), sound.setPosition(pos), sound.getLength()
    and sound.isSeekable() to the engine

2004.03.06
  - Abort can now be done like Abort("Some error") or Abort("Some message\n");
    The \n on the end means no file/line info is drawn to the screen
  - Added File->Options->General File Types page
    where there's a Open Unknown File Types As Text option
  - Added AttachPlayerInput/DetachPlayerInput

2004.03.03
  - Added surface.gradientLine surface.gradientRectangle and surface.gradientTriangle functions
  - GradientLine now draws the colors in the correct order in standard32/16/8 etc
  - Added Get/SetPersonIgnoreList for telling a certain person to ignore certain other persons

2004.02.29
  - Added Get/SetPersonData
    (useful for finding out the number of frames in the person's current direction)
    and storing various data about a person.

2004.02.27
  - Added keyboard tile/image pixel editing keys (Up/Down/Left/Right space for move/place pixel)

2004.02.25
  - Added Get/SetTileSurface
  - if there's only one game in the games directory, execute that upon startup
    (so if you want to distibute your game with sphere, you can just not put any other games there)
  - Added SetLayerScaleFactorX/Y functions

2004.02.16
  - Fix Import Spritesets from RM2K Charset (it was missing the last frame of each direction)
  
2004.02.11
  - Zoom in/out shortcuts CTRL and + for zoom in and CTRL and - for zoom out
  - You can now paste into the main window and
    it'll create a document based on the clipboard type  
  - The script editor now highlight's good and bad braces (green for good, red for bad)
    If a brace is red, your script has a problem.
  - Shift + left click selects the current color in the image editor

2004.02.06
  - Added Redo to image editor
  - Added an options dialog

2004.02.02
  - Font preview palette added
  - Added preview to imageview's custom filter dialog
  - Added Map->Edit Entities to allow you to edit multiple entities at once

2004.01.30
  - You can now select multiple tiles in the tileset palette,
  and edit them as one single image in the tileset tab.

2004.01.27
  - Added tabbed windows

2004.01.17
  - Added a COMMAND_ANIMATE person command
  - Made rawfile_object.write produce a nicer error message if the rawfile wasn't writeable

2004.01.07
  - Added a multi-tile tool, just select the tiles you want to place by holding down the
    left mouse button in the Tiles window and drag until you have what you want to place on the map

2003.12.28
  - Made Sound player in editor better (it now requests an audio-device if needed)
  - Made "Package Game!" show a percentage complete message in the status bar

2003.12.25
  - Made Project View support multiple folders e.g. maps/towns/freddys.rmp and such
    (Currently this breaks Package Game (subfolders wont be included within the package)
    You also have to make the folders within explorer,
    I don't think this is that big of a problem though.

2003.12.24
  - Replaced Image/Map Tools palette with Image/Map toolbars
  - Made repeat command have a tick next to it when repeating
  - Added shortkey key combos to the menu's

2003.12.14
  - Added Import Direction From Animation and Export Direction To Animation

2003.12.09
  - Made Resample better (or more correct) - gau_veldt
  - Added Resample Spriteset

2003.08.31
  - Added shortcuts for Copy and Paste in ImageView and SpritesetView - Tim Enderling

2003.08.20
  - Palettes can be dockable now - Tim Enderling
  - Added File->Browse

2003.08.14
  - Added a Spriteset Animation pallete
  (so you can preview what the spriteset's animation will look like) - Tim Enderling

2003.08.11
  - SetLayerAlpha/GetLayerAlpha became SetLayerMask/GetLayerMask
    (Just as fast as LayerAlpha's, but can do per layer color tinting much like ApplyColorMask)
  - Added a freehand selection tool for the image editor (doesn't fully work yet)

2003.07.05
  - Added move entity maptool
  - You can now paste images from the clipboard onto the map using the Paste Area tool.

2003.07.03
  - Don't allow Image->View At Original Size when image is maximized...
  - wxeditor now uses wxNotebook (and is now known to compile in linux using wxGTK-2.4.1)
  - copy map tool now also copies the map as an image too
  - Added File->Import->RM2K charset to spritesets...
  - Added File->Import->RM2K chipset to tileset.
  - Added Custom Filters for images (currently you can't define your own though)

2003.07.31
  - MapView "Fill Area" became "Fill Rectanglar Area"
  - And added a "Fill Area" which behaves like ImageView's "Fill Area" but for tiles.
  - Made clicking on the spriteset images palette only
    change the spriteset indexes if you were viewing the Frames.
  - Added the ability to reorder the tileset by moving tiles back or forward :)
  - Added Image->Rotate (so you can freely rotate images in the editor)
  - Made Image->Rotate, Image->Resize, Image->Rescale, Image->Rescale undo-able
  - Errors inside a person's OnCreate script were crashing the engine, fixed.
  - Made Copy Map Area tool more reliable
  - Fix ImageView Fill bug when using ALPHA/RGB ONLY blend modes
  
2003.07.23
  - Fix linux input bug (now BindKey works :))

2003.07.20
  - Added ability to change layer in person dialog via dropdown list
  - Adding View->Persons As->Icons, Mini-images, Images to mapview

2003.07.19
  - Added GetTileName(tile_index)
  - Updated editor for janusfury's windowstyle changes
  - Spritesets are now validated when loaded in the editor

2003.07.17
  - Windowstyle changes (edge offsets, more background modes) - janusfury

2003.07.12
  - Added GetLayerIndex(name) to layers.js

2003.07.07
  - Added BindJoystickButton/UnbindJoystickButton
  - No longer allow things like LoadSound('music.ogg', [false]) or SetPersonX('Bob', new Object())...


2003.07.06
  - Made QueuePersonScript actually abort upon errors
    and not fail if you destroy the person within the script

2003.06.30
  - spriteset.clone() added.
  - better filename/path checking
  
2003.06.29
  - extended ASCII characters support in fonts

2003.06.??
  - SetPersonSpriteset added.

2003.06.17
  - Made the editor's image renderer faster
  - Added surface.applyLookup()

2003.06.14
  - Added GetMapEngine().save(filename)

2003.06.13
  - made AttachInput work with the joystick aswell as the keyboard

2003.06.11
  - fixed bug where maps smaller than the screen would repeat themselves
  - added option for repeating maps

2003.06.10
  - added flatten all visible layers to the editor

2003.06.08
  - Flik added
    spriteset.filename
    spriteset.save(filename)
    RestartGame()
  - Gau added
    HashByteArray(byte_array)
    HashFromFile(filename)

2003.05.14
  - adding drawText/drawZoomedText/drawTextBox surface methods
  - added surface.save(filename)

2003.05.12
  - adding support for joysticks in linux/unix

2003.05.11
  - engine title now says the game name that you're playing instead of "Sphere"

2003.05.06
  - added ability to view tile obstructions from within editor
  - added font.getColorMask(), windowstyle.setColorMask(color) and windowstyle.getColorMask()

2003.05.04
  - fixes so that the SDL subsystem sort of compiles
  - fixed SetTileImage blend-mode bug

2003.05.01
  - added a linux doc for compiling sphere on linux
  - fixes so scons compiles in linux
  
2003.04.25
  - fixed MapView->View Grid so it takes into account zoom factors
  - fixed bug where map editor would crash if you used "Select Tile" on out of range tiles

2003.04.21
  - added playlist system script
  - added more menu items to the Edit Range menu in tile-view and spriteset-view
  - changed version number to 1.1

2003.04.17
  - added SetPersonAngle and GetPersonAngle
  
2003.04.16
  - added GetPersonBase (cheap alternative to GetPersonSpriteset(name).base)

2003.03.17
  - added surface_object.triangle(x1, y1, x2, y2, x3, y3, color)

2003.03.10
  - rearranged imageview paste menu items into a paste submenu
  - added paste->Into Selection
  - added SetDefaultMapScript and CallDefaultMapScript

2003.03.08
  - added a selection tool to the image editor
  - Fill->RGB/Alpha/Both, Replace->RGB/Alpha and Scale Alpha all work within the selection now
  - added an ellipse tool

2003.03.07
  - added a adjust brightness to the image editor

2003.03.06
  - added a resample image to the image editor
  - added an "other" slide menu option (so you can specify how much to slide by)
  - triggers/persons and zones are now also slided

2003.02.23
  - fixed ExecuteZones so that it reported errors if there no zones to execute

2003.02.22
  - made tileset view->zoom simplier and made it update the scrollbar when zooming

2003.02.20
  - added CallMapScript(SCRIPT)
  - clarified documentation for QueuePersonCommand
  - it now just does nothing when you resize images/fonts/tile sizes
    to zero width or height (instead of crashing)

2003.02.18
  - show the version number in the engine and editor windows as well
    as the start menu
  - integrated SDHawk's startup game
  - include all files in packages, including files without dots in
    their name

2003.02.17
  - you can no longer add zones that have a width and height of zero

2003.02.11
  - added help menu to take you to the sphere.sf.net FAQ
  - removed the reference to MIDI files from the editor...
  (you can't add them to your projects, because they are unsupported)

2003.02.09
  - removed "Alternate DirectBlit method" from sphere_gl's
    configuration, since it is never used.

2003.02.07
  - fixed a stack overflow bug when using the fill tool on large images
  - removed the options dialog box from the editor
  - fix trigger activation so you can activate a trigger more than
    once on a map
  - make rawfile.read return a ByteArray object
  - redraw the map after ResizeAllLayers
  - when resizing or rescaling the tileset, move entities, the
    start point, and zones appropriately as well
  - changed the Paste Area tool's tooltip to "Paste Area" instead of
    "Paste"
  - clarified documentation for ExitMapEngine()
  - added a 1000 millisecond delay before error messages go away
  - when zone scripts fail, the map engine stops (just like triggers
    and person scripts)
  - calling Exit() in a bound script or person script or trigger
    (etc.) no longer gives an error
  - added Eric Duvic's circles.js system script
  - made Clock.getTime() return an array if you pass true to it.
    (August Bigelow)

2003.02.05
  - fixed GrabImage crash bug in standard16 and interpolate16
  - fixed: GrabImage in sphere_gl grabbed the wrong pixels (and
    inverted them too)

2003.02.04
  - fixed bug where phantom buttons would appear in tool palettes while
    resizing them
  - fixed bug where drawing gradient window styles in sphere_gl would
    leave a gap along the edge of the center
  - fixed bug where drawing a gradient rectangle before drawing any
    images would cause the gradient to not show up
  - open sounds in the editor as a stream so huge files don't take
    forever to load
  - moving between two adjacent triggers now activates the new one
    (this may be a regression from when I fixed the trigger detection
    to be pixel-perfect)
  - added IsLayerReflective and SetLayerReflective (Brian Robb)
  - fix GetCurrentMap() in map entry scripts
  - don't crash when loading a corrupt spriteset
  - added file_object.flush()
  - added links to web sites and documentation from the editor's help menu
  - beta 3 released

2003.01.29
  - make ExecuteGame work no matter where the game calling it is
    located on the filesystem
  - fix bug where OpenRawFile('blah', true) wouldn't actually create
    the file
  - Added new functions to joysticks.js system script and improved old
    functions' robustness (Brian Robb)

2003.01.28
  - added Flik's joysticks.js system script
  - fixed the "person doesn't exist inside of 'on create' script" bug

2003.01.26
  - Sphere 1.0 beta 2 released.

2003.01.25
  - upgraded JS engine to 1.5 RC 5, which should improve framerates
    and fix a few crashes.
  - improved GetGameList() so that it returns author and description
    information as well
  - the Game Settings dialog box now has author and description
    information
  - you no longer need to explicitly set the game script.  The first
    script added to the project is automatically set as the game script.

2003.01.24
  - added AreZonesAt, ExecuteZones, ExecuteZoneScript, GetZoneX/Y,
    GetZoneWidth/Height, GetNumZones (Brian Robb)
  - made the Run Sphere button in the editor work no matter what
    project is open.  now you can open a project file anywhere on your
    hard drive and run the game with the lightning bolt.

2003.01.23
  - added Get/SetTileDelay and Get/SetNextAnimatedTile (Brian Robb)

2003.01.22
  - various fixes to the new SCons build system
  - pruned source tree, getting rid of many obsolete directories and
    files
  - made build system convert text files from UNIX to DOS format when
    installing them
  - added an installer, which registers file types with Windows
    (double-clicking on packages, finally!)
  - updated icons to DRosen's new ones
  - bumped version number to 1.0 beta 1 (beta release!)
  - added GetTileImage() and SetTileImage() (BrianRobb)
  - fixed a ton of bugs in the spriteset editor
  - made line numbers count from 1 instead of 0 (Brian Robb)

2003.01.21
  - fixed error message in GetPersonList() and made person name error
    checking more compact (Brian Robb)
  - reverted convert.js to be compatible with 0.97 games (Brian Robb)
  - support building with VC6 and SCons in Cygwin (replacing the old
    DevStudio build environment)

2003.01.17
  - changed OpenRawFile to take an optional writeable parameter,
    defaults to false for compatibility with old games (Brian Robb)

2003.01.16
  - added raw_file.write() (Brian Robb)

2003.01.15
  - changing the script font remembers the font size (Brian Robb)
  - added Get/SetLayerAlpha to the docs (Brian Robb)
  - added GetLayerName() so you can refer to layers by name (Brian Robb)
  - added GetObstructingTile/Person(name,x,y) to the map engine (Brian Robb)

2003.01.14
  - added more script editor options (change font, tab size, toggle
    highlighting) (Brian Robb)
  - added RequireScript() and RequireSystemScript() (Brian Robb)
  - added spriteset color replacer (Brian Robb)
  - added layerview -> export all visible layers as image (Brian Robb)
  - added Get/SetMapEngineFrameRate() (Brian Robb)
  - added Ignore{Person,Tile}Obstructions() and
    IsIgnoring{Person,Tile}Obstructions() (Brian Robb)
  - fixed bug where it was possible to undo after first opening a
    script (Brian Robb)
  - fixed bug where it was possible to set a frame rate of 0 using
    MapEngine(map, 0) (Brian Robb)
  - added line numbers in script dialog (Brian Robb)

2003.01.13
  - slightly tweaked trigger locations so you cannot slip between two
    adjacent ones
  - cannot delete a tile if there is only one left (Brian Robb)
  - optionally prune tileset when using Import Image To Map (Brian Robb)
  - added map -> slide -> up/right/down/left (doesn't move entities though)
    (Brian Robb)
  - added layer view -> slide -> up/right/down/left (Brian Robb)
  - replace color with new color in tileset range (Brian Robb)
  - layers are no longer reflective by default (Brian Robb)
  - Change Font option in the script editor (Brian Robb)

2003.01.12
  - add support for exporting spritesets as images
  - add support for stretched window style backgrounds
  - add a drawZoomedFrame method to animation objects
  - fix SetFrameRate(0)
  - add keyboard shortcuts to the font editor so you can press a
    letter and jump to that character.  you can also use arrow keys.
  - added left and right arrow keyboard shortcuts to the map/tileset
    editor.
  - added keyboard shortcuts for some of the obstruction things
  - added ability to paste RGB or alpha into image editor (Brian Robb)
  - added GetCurrentMap() function (Brian Robb)
  - added an option for drawing a grid in the image editor
  - removed BlendPaste and changed Negative Image so it can choose
    between RGB/Alpha/Both
  - added GetTalkDistance() and GetTalkActivationKey() (Brian Robb)
  - added a menu option in the map editor to lock the layers in place
    so you don't accidentally drag them around (Brian Robb)
  - added support for joysticks
  - added IsTriggerAt() and ExecuteTrigger() (Brian Robb)

2003.01.11
  - display the Corona and Audiere version numbers in Help | About.
    Also update copyright to 2003
  - partially fix resource leak when switching between editor
    windows.  this should alleviate a few random editor crashes.
  - document alt-f4 in keys.txt
  - added documentation that says you shouldn't use SetFrameRate() at
    the same time as the map engine
  - added NegativeImage and Solarize to image editor (Brian Robb)
  - added a GetVersion() function that returns the current version as
    a floating point number
  - added some documentation for packages
  - added a surface.replaceColor method

2003.01.09
  - fix bug where Sphere would assign "north" to person entities that
    didn't even have a "north" direction.
  - make trigger location detection more reliable by checking one
    extra pixel to the left and one up so people can't slip between
    two adjacent triggers.
  - fix bug where switching from larger map to smaller map makes
    Sphere think smaller map is bigger than it really is
  - when inserting person entities into a map, put them one more pixel
    up and one more pixel left so they are aligned with tiles.
  - animate obstructions with tiles
  - ExecuteGame() changes so drivers don't keep images around
    after the driver has been destroyed.  this prevents sphere_gl
    texture corruption.
  - fix a crash bug in the FLIC animation code. prevents some crashes
    from invalid FLIC animation files.
  - fix a crash bug in the MNG animation code
  - fix memory leak in DestroyPerson()
  - don't allow setPixel() or getPixel() to access pixels outside of
    the surface
  - standard32: don't crash when creating a surface from an image with
    an alpha of 0

2003.01.08
  - sphere_gl: don't put a border around the window when running
    fullscreen
  - sphere_gl: fix GrabImage in sphere_gl

2003.01.06
  - fix a horrible invalid memory usage bug in config.exe

2003.01.05
  - added GetTileWidth and GetTileHeight to the docs
  - added ReplaceTilesOnLayer function
  - don't allow SetFrameRate() to take an fps less than 1

2002.12.29
  - Got Sphere to build in Cygwin with SCons (100% free software!)

2002.12.28
  - removed GetCurrentMap() from documentation, because it doesn't
    actually exist
  - fixed animation_object's width and height documentation
  - added some documentation for animation_object's getNumFrames()
    method
  - documented system keypresses (F1 = toggle framerate throttle in
    map engine, F11 = show fps, F12 = take screenshot)

2002.12.24
  - Fixed clipping in ApplyColorFX() (Lyell Embery)
  - Bug fix:  MapToScreenX/Y() and ScreenToMapX/Y() were doing
    something other than converting from map to screen coordinates
    (and vice versa) (Lyell Embery)

2002.12.23
  - added ColorMatrix object and applyColorFX4 method to surface
    objects (Lyell Embery)

2002.12.21
  - added ApplyColorFX() method to surface objects (Lyell Embery)
  - added Flik's colorspace conversion system script
  - added Flik's math.js system script

2002.12.12
  - added SetPersonFrameRevert(), which allows a person to revert to
    the first frame of an animation after a given amount of frames
    (Lyell Embery)
  - added floating point precision on person object positions

2002.12.11
  - added Daroth's map_animation.js system script
  - added documentation for map_animation.js script

2002.11.08
  - added support for movement speeds other than 1 (Lyell Embery)
  - fixed potential crash when sound objects are destroyed

2002.11.04
  - added support for zones (Lyell Embery)
  - added a wxeditor port of the old MFC editor (Lyell Embery)

2002.10.14
  - clarified GetPersonX and GetPersonY documentation

2002.10.12
  - upgraded Sphere to new audiere, allowing user to choose whether to
    run without sound or not
  - added panning and pitch shifting to sound objects

2002.09.20
  - fixed bug: infinite recursion of search text is in replace text
    (Lyell Embery)
  - switch focus to clicked scripts (Lyell Embery)

2002.09.08
  - added obstruction move tool (Lyell Embery)
  - holding control while placing obstructions aligns the endpoints to
    tile_width / 4 (Lyell Embery)
  - draws an xor line when adding or moving an obstruction line (Lyell Embery)

2002.08.04
  - added Flik's layers system script
  - fix bug where Sphere wouldn't report errors in render or update
    scripts (by reverting to an older version of the JS engine)

2002.07.28
  - added IsLayerVisible and SetLayerVisible to the documentation

2002.06.23
  - clarified GetFrameRate() documentation

2002.06.21
  - reset map engine frame throttling if an update script takes more
    than a second

2002.06.20
  - if an audio context can't be opened, try to open the null one

2002.06.17
  - 0.97 release
